package work.jame.blog.pojo.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import work.jame.blog.pojo.User;

import java.time.LocalDateTime;
import java.util.List;

/**
 * @author : Jame
 * @date : 2023-05-20 11:45
 **/
@JsonInclude
public class RootCommentVO {

    /**
     * 这条评论的用户信息
     */
    private User user;

    /**
     * 当前评论是否是当前用户发送的
     */
    private Boolean commentSenderIsMe;

    /**
     * 评论id
     */
    private Long id;

    /**
     * 评论的内容
     */
    private String content;

    /**
     * 发送评论日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime sendDateTime;

    /**
     * 该评论点赞数量
     */
    private Integer likeNumber;

    /**
     * 当前用户是否已点赞
     */
    private Boolean currentUserLike;

    /**
     * 当前用是否已点不喜欢
     */
    private Boolean currentUserNotLike;

    /**
     * @ 的用户id集合
     */
    private List<Long> callUserIds;

    /**
     * 子级评论
     */
    private List<SonCommentVO> sonComments;

    /**
     * 子级评论总数
     */
    private Long sonCommentTotal;

    /**
     * 当前页数
     */
    private Long currentPageNumber;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public LocalDateTime getSendDateTime() {
        return sendDateTime;
    }

    public void setSendDateTime(LocalDateTime sendDateTime) {
        this.sendDateTime = sendDateTime;
    }

    public Integer getLikeNumber() {
        return likeNumber;
    }

    public void setLikeNumber(Integer likeNumber) {
        this.likeNumber = likeNumber;
    }

    public Boolean getCurrentUserLike() {
        return currentUserLike;
    }

    public void setCurrentUserLike(Boolean currentUserLike) {
        this.currentUserLike = currentUserLike;
    }

    public Boolean getCurrentUserNotLike() {
        return currentUserNotLike;
    }

    public void setCurrentUserNotLike(Boolean currentUserNotLike) {
        this.currentUserNotLike = currentUserNotLike;
    }

    public List<Long> getCallUserIds() {
        return callUserIds;
    }

    public void setCallUserIds(List<Long> callUserIds) {
        this.callUserIds = callUserIds;
    }

    public List<SonCommentVO> getSonComments() {
        return sonComments;
    }

    public void setSonComments(List<SonCommentVO> sonComments) {
        this.sonComments = sonComments;
    }

    public Long getSonCommentTotal() {
        return sonCommentTotal;
    }

    public void setSonCommentTotal(Long sonCommentTotal) {
        this.sonCommentTotal = sonCommentTotal;
    }

    public Long getCurrentPageNumber() {
        return currentPageNumber;
    }

    public void setCurrentPageNumber(Long currentPageNumber) {
        this.currentPageNumber = currentPageNumber;
    }

    public Boolean getCommentSenderIsMe() {
        return commentSenderIsMe;
    }

    public void setCommentSenderIsMe(Boolean commentSenderIsMe) {
        this.commentSenderIsMe = commentSenderIsMe;
    }

    @Override
    public String toString() {
        return "RootCommentVO{" +
                "user=" + user +
                ", commentSenderIsMe=" + commentSenderIsMe +
                ", id=" + id +
                ", content='" + content + '\'' +
                ", sendDateTime=" + sendDateTime +
                ", likeNumber=" + likeNumber +
                ", currentUserLike=" + currentUserLike +
                ", currentUserNotLike=" + currentUserNotLike +
                ", callUserIds=" + callUserIds +
                ", sonComments=" + sonComments +
                ", sonCommentTotal=" + sonCommentTotal +
                ", currentPageNumber=" + currentPageNumber +
                '}';
    }
}
